.386
.model flat,stdcall
option casemap:none
include msvcrt.inc
includelib msvcrt.lib
printf  proto C:dword,:dword
.data
lb_write_int db '%d',0
lb_writeln_int db '%d',0ah,0dh,0
lb_write_real db '%lf',0
lb_writeln_real db '%lf',0ah,0dh,0
lb_tmp db 0, 0, 0, 0, 0, 0, 0, 0
lb_read_int db '%d',0
lb_read_real db '%f',0

.code
main PROC
mov ecx, esp
sub esp, 16
mov eax, 0
push eax
mov edi, -12
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov edi, -12
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
cmp eax, 0
je _LABEL_0
mov eax, 0
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
jmp _LABEL_1
_LABEL_0:
mov eax, 0
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
_LABEL_1:
mov eax, 0
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov eax, 0
push eax
_LABEL_2:
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop ebx
cmp eax, ebx
ja _LABEL_3
mov edi, -16
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
push eax
pop ebx
pop eax
add eax, ebx
push eax
mov edi, -16
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
inc eax
mov [esi-0], eax
jmp _LABEL_2
_LABEL_3:
_LABEL_7:
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
push eax
pop ebx
pop eax
cmp eax, ebx
mov eax, 0
setng al
cmp eax, 0
je _LABEL_8
mov edi, -16
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
push eax
pop ebx
pop eax
sub eax, ebx
push eax
mov edi, -16
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
push eax
pop ebx
pop eax
add eax, ebx
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
jmp _LABEL_7
_LABEL_8:
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
pop ebx
cmp ebx, eax
jne _LABEL_18
mov eax, 12
push eax
push ecx
mov ecx, esp
call 0
pop ecx
_LABEL_18:
push ebx
mov eax, 0
pop ebx
cmp ebx, eax
jne _LABEL_19
mov eax, 12
push eax
push ecx
mov ecx, esp
call 0
pop ecx
_LABEL_19:
_LABEL_20:
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
push eax
pop ebx
pop eax
add eax, ebx
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
push eax
mov eax, 0
push eax
pop ebx
pop eax
cmp eax, ebx
mov eax, 0
setg al
cmp eax, 0
je _LABEL_20
jmp _CODE_LABEL_0
_CODE_LABEL_0:
mov eax, 0
push eax
mov edi, -8
mov esi, ecx
add esi, edi
mov eax, [esi]; calculate ExpId 
pop eax
mov [esi-0], eax
add esp, 16
ret
main ENDP
END main

